# 给定一棵二叉树，你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

# Definition for a binary tree node.

# 执行用时：
# 44 ms
# , 在所有 Python3 提交中击败了
# 93.64%
# 的用户
# 内存消耗：
# 16.9 MB
# , 在所有 Python3 提交中击败了
# 43.14%
# 的用户
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
class Solution:
    def diameterOfBinaryTree(self, root: TreeNode) -> int:
        res_list = []
        if root == None:
            return 0
        def dfs(root):
            if root == None:
                return 0
            temp1 = dfs(root.left)
            temp2 = dfs(root.right)
            res_list.append(temp1+temp2)
            return max(temp1+1,temp2+1)
        dfs(root)
        return max(res_list)
        